home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 16.4 KB | 384 lines |
- 10 REM AMP-CALC V3.2 ***** 4/27/83 *********
- 15 PI=3.1416
- 17 PRINT:PRINT,"K2UYH ---- MODIFIED IBM PC --- WA2TIF "
- 20 REM PRECISION 4: REM ******** COMPLEX ARITHMATIC ROUTEENS ******
- 30 DIM SR(2,2), SX(2,2), SM(2,2), SA(2,2), ZR(2), ZX(2)
- 40 DIM GR(2), GX(2), GM(2), GA(2), RZ(2), XZ(2), PR(4), PX(4)
- 50 DIM CR(2), CX(2), CM(2), CA(2)
- 60 DIM XG(2), RG(2), MG(2), AG(2): DG=180/PI: Z0=50
- 70 DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
- 80 DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
- 90 DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
- 100 DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
- 110 DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
- 140 DEF FNR(MG,AG)=MG*COS(AG/DG)
- 150 DEF FNX(MG,AG)=MG*SIN(AG/DG)
- 160 REM ********** INITIAL & S PARAMETER I/O *************
- 170 PRINT: PRINT "PROGRAM FOR CALCULATING SMALL SIGNAL AMPLIFIER CHARTERISTICS"
- 180 PRINT: PRINT "S PARAMETER ANGLES IN DEGREES"
- 190 PRINT:INPUT"PARAMETER FORM = ('POL' OR 'RECT' OR 'FILE')";Q$
- 200 IF Q$="POL" THEN 240 ELSE IF Q$="RECT" THEN 300 ELSE IF Q$="FILE" THEN 210 ELSE 190
- 210 PRINT: INPUT "PARAMETER FILE NAME OR DIR OR QUIT"; F$: PRINT
- 220 IF F$="DIR" THEN DIR "*.S": GOTO 210 ELSE IF F$="QUIT" THEN 190 ELSE F$=F$+".S"
- 230 OPEN #1,"I",F$: MAT READ #1, SR, SX, SM, SA: GOTO 390
- 240 FOR J=1 TO 2: FOR I=1 TO 2
- 250 PRINT "MAG OF S("; I; ","; J; ")=";: INPUT SM(I,J)
- 260 PRINT "ANG OF S("; I; ","; J; ")=";: INPUT SA(I,J)
- 270 SR(I,J)=FNR(SM(I,J),SA(I,J)): PRINT "REAL S("; I; ","; J; ")="; SR(I,J)
- 280 SX(I,J)=FNX(SM(I,J),SA(I,J)): PRINT "IMAG. S("; I; ","; J; ")="; SX(I,J)
- 290 PRINT: NEXT: NEXT: GOTO 360
- 300 FOR J=1 TO 2: FOR I=1 TO 2
- 310 PRINT "REAL OF S("; I; ","; J; ")=";: INPUT SR(I,J)
- 320 PRINT "IMG OF S("; I; ","; J; ")=";: INPUT SX(I,J)
- 330 SM(I,J)=FNMG(SR(I,J),SX(I,J)): PRINT "MAG S("; I; ","; J; ")="; SM(I,J)
- 335 GOSUB 3640
- 340 SA(I,J)=FNAG(SR(I,J),SX(I,J)): PRINT "ANGLE S("; I; ","; J; ")="; SA(I,J)
- 350 PRINT: NEXT: NEXT
- 360 INPUT "WANT TO SAVE FILE (Y/N)"; Q$: IF Q$<>"Y" THEN 390
- 370 INPUT"FILE NAME";F$:F$=F$+".S":ERASE F$:OPEN #1,"O",F$
- 380 MAT WRITE #1,SR,SX,SM,SA: CLOSE #1
- 390 REM ********** COMMON PROD AND N AND M MATRIX *********
- 400 PR(1)=FNMR(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
- 410 PX(1)=FNMX(SR(1,2),SX(1,2),SR(2,1),SX(2,1))
- 420 PR(2)=FNMR(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
- 430 PX(2)=FNMX(SR(1,1),SX(1,1),SR(2,2),SX(2,2))
- 440 RD=PR(2)-PR(1): XD=PX(2)-PX(1)
- 450 RN=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
- 460 XN=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
- 470 RM=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
- 480 XM=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
- 490 GOSUB 510: GOSUB 600: GOTO 690
- 500 REM ************* SOURCE Z MODULE ********************
- 510 PRINT: INPUT "REAL OF SOURCE Z ="; ZR(1): ZR(1)=ZR(1)/Z0
- 520 INPUT "IMG OF SOURCE Z ="; ZX(1): IF ZX(1)= 0 THEN ZX(1)=0.01
- 530 ZX(1)=ZX(1)/Z0
- 540 GR(1)=FNDR(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
- 550 GX(1)=FNDX(ZR(1)-1,ZX(1),ZR(1)+1,ZX(1))
- 555 GOSUB 3640
- 560 GM(1)=FNMG(GR(1),GX(1)): GA(1)=FNAG(GR(1),GX(1))
- 570 PRINT "SOURCE REF COEF MAG ="; GM(1)
- 580 PRINT "SOURCE REF COEF ANG ="; GA(1): RETURN
- 590 REM ************** LOAD Z MODULE **********************
- 600 PRINT: INPUT "REAL OF LOAD Z ="; ZR(2): ZR(2)=ZR(2)/Z0
- 610 INPUT "IMG OF LOAD Z ="; ZX(2): IF ZX(2)=0 THEN ZX(2)=0.01
- 620 ZX(2)=ZX(2)/Z0
- 630 GR(2)=FNDR(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
- 640 GX(2)=FNDX(ZR(2)-1,ZX(2),ZR(2)+1,ZX(2))
- 645 GOSUB 3640
- 650 GM(2)=FNMG(GR(2),GX(2)): GA(2)=FNAG(GR(2),GX(2))
- 660 PRINT "LOAD REF COEF MAG ="; GM(2)
- 670 PRINT "LOAD REF COEF ANG ="; GA(2): RETURN
- 680 REM *************** MENUE *************************
- 690 PRINT: PRINT " WANT TO :"
- 700 PRINT " CALCULATE Z INPUT ---------------- ZI
- 710 PRINT " CALCULATE Z OUT ------------------ ZO"
- 720 PRINT " CALCULATE VOLTAGE GAIN ----------- VG"
- 730 PRINT " CALCULATE POWER GAIN ------------- PG"
- 740 PRINT " CALCULATE AVAIL PWR GAIN --------- AG"
- 750 PRINT " CALCULATE TRANDUCER PWR GAIN ----- TG"
- 760 PRINT " CALCULATE CONSTANT GAIN CIRCLES -- GC
- 770 PRINT " CALCULATE STABILITY CIRCLES ------ SC
- 780 PRINT " CALCULATE CONSTANT NF CIRCLES ---- NF
- 785 PRINT " CHANGE TERMINAL Z ---------------- CZ"
- 790 PRINT " DISPLAY DEVICE S PARAMETERS ------ SP
- 795 PRINT " END------------------------ END
- 800 INPUT "ENTER CODE"; C$
- 810 IF C$="ZI" THEN GOSUB 880 ELSE IF C$="ZO" THEN GOSUB 1070
- 820 IF C$="VG" THEN GOSUB 1260 ELSE IF C$="PG" THEN GOSUB 1400
- 830 IF C$="AG" THEN GOSUB 1500 ELSE IF C$="TG" THEN GOSUB 1600
- 840 IF C$="GC" THEN GOSUB 1950 ELSE IF C$="SC" THEN GOSUB 2510
- 850 IF C$="NF" THEN GOSUB 3360 ELSE IF C$="SP" THEN GOSUB 3530
- 855 IF C$="CZ" THEN GOSUB 1810
- 860 IF C$="END" THEN END ELSE IF C$="NEW" THEN 180 ELSE 690
- 870 REM ************** ZIN CALC *****************************
- 880 NR=PR(1): NX=PX(1)
- 890 MR=FNMR(NR,NX,GR(2),GX(2)): MX=FNMX(NR,NX,GR(2),GX(2))
- 900 DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 910 DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 920 RG(1)=SR(1,1)+FNDR(MR,MX,DR,DX): XG(1)=SX(1,1)+FNDX(MR,MX,DR,DX)
- 925 GOSUB 3640
- 930 MG(1)=FNMG(RG(1),XG(1)): AG(1)=FNAG(RG(1),XG(1))
- 940 PRINT: PRINT "MAG OF INPUT REF COEF ="; MG(1)
- 950 PRINT "ANG OF INPUT REF COEF ="; AG(1)
- 960 RZ(1)=Z0*FNDR(1+RG(1),XG(1),1-RG(1),-XG(1))
- 970 XZ(1)=Z0*FNDX(1+RG(1),XG(1),1-RG(1),-XG(1))
- 980 PRINT "REAL INPUT Z ="; RZ(1)
- 990 PRINT "IMG INPUT Z ="; XZ(1): IF T9=1 THEN RETURN
- 1000 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1010 IF H$<>"Y" THEN RETURN
- 1020 LPRINT ,: PRINT , "MAG OF INPUT REF COEF ="; MG(1)
- 1030 LPRINT , "ANG OF INPUT REF COEF ="; AG(1)
- 1040 LPRINT , "REAL INPUT Z ="; RZ(1)
- 1050 LPRINT , "IMG INPUT Z ="; XZ(1): LPRINT : RETURN
- 1060 REM ************* ZOUT CALC ***************************
- 1070 NR=PR(1): NX=PX(1)
- 1080 MR=FNMR(NR,NX,GR(1),GX(1)): MX=FNMX(NR,NX,GR(1),GX(1))
- 1090 DR=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
- 1100 DX=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
- 1110 RG(2)=SR(2,2)+FNDR(MR,MX,DR,DX): XG(2)=SX(2,2)+FNDX(MR,MX,DR,DX)
- 1115 GOSUB 3640
- 1120 MG(2)=FNMG(RG(2),XG(2)): AG(2)=FNAG(RG(2),XG(2))
- 1130 PRINT: PRINT "MAG OF OUTPUT REF COEF ="; MG(2)
- 1140 PRINT "ANG OF OUTPUT REF COEF ="; AG(2)
- 1150 RZ(2)=Z0*FNDR(1+RG(2),XG(2),1-RG(2),-XG(2))
- 1160 XZ(2)=Z0*FNDX(1+RG(2),XG(2),1-RG(2),-XG(2))
- 1170 PRINT "REAL OUTPUT Z ="; RZ(2)
- 1180 PRINT "IMG OUTPUT Z ="; XZ(2): IF T9=1 THEN RETURN
- 1190 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1200 IF H$<>"Y" THEN RETURN
- 1210 LPRINT ,: LPRINT , "MAG OF OUTPUT REF COEF ="; MG(2)
- 1220 LPRINT , "ANG OF OUTPUT REF COEF ="; AG(2)
- 1230 LPRINT , "REAL OUTPUT Z ="; RZ(2)
- 1240 LPRINT , "IMG OUTPUT Z ="; XZ(2): LPRINT : RETURN
- 1250 REM ************ VOLTAGE GAIN CALC *****************
- 1260 NR=FNMR(SR(2,1),SX(2,1),1+GR(2),GX(2))
- 1270 NX=FNMX(SR(2,1),SX(2,1),1+GR(2),GX(2))
- 1280 DR=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 1290 DX=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 1300 ER=FNMR(DR,DX,1+RG(1),XG(1)): EX=FNMX(DR,DX,1+RG(1),XG(1))
- 1305 GOSUB 3640
- 1310 AR=FNDR(NR,NX,ER,EX): AX=FNDX(NR,NX,ER,EX): AV=FNMG(AR,AX): VA=FNAG(AR,AR)
- 1320 PRINT: PRINT "VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
- 1330 VG=20*LOG10(AV): PRINT "VOLTAGE GAIN IN DB ="; VG
- 1340 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1350 IF H$<>"Y" THEN RETURN
- 1360 LPRINT :LPRINT ,"VOLTAGE GAIN ="; AV, "PHASE SHIFT ="; VA
- 1370 VG=20*LOG10(AV): LPRINT ,"VOLTAGE GAIN IN DB ="; VG
- 1380 LPRINT : RETURN
- 1390 REM *************** POWER GAIN *********************
- 1400 NR=SM(2,1)^2*(1-GM(2)^2)
- 1410 DR=(1-SM(1,1)^2)+(GM(2)^2)*(SM(2,2)^2-(FNMG(RD,XD))^2)-2*FNMR(GR(2),GX(2),RN,XN)
- 1420 PG=NR/DR: PRINT: PRINT "POWER GAIN ="; PG
- 1430 PG=10*(LOG(PG)/LOG(10)): PRINT "POWER GAIN IN DB ="; PG
- 1440 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1450 IF H$<>"Y" THEN RETURN
- 1460 PG=NR/DR: LPRINT,: LPRINT, "POWER GAIN ="; PG
- 1470 PG=10*(LOG(PG)/LOG(10)): LPRINT, "POWER GAIN IN DB ="; PG
- 1480 LPRINT: RETURN
- 1490 REM *************** AVAILABLE POWER *******************
- 1500 NR=SM(2,1)^2*(1-GM(1)^2)
- 1510 DR=(1-SM(2,2)^2)+(GM(1)^2)*(SM(1,1)^2-(FNMG(RD,XD))^2)-2*FNMR(GR(1),GX(1),RM,XM)
- 1520 PG=NR/DR: PRINT: PRINT "AVAILABLE POWER GAIN ="; PG
- 1530 PG=10*(LOG(PG)/LOG(10)):PRINT "AVAILABLE POWER GAIN IN DB ="; PG
- 1540 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 1550 IF H$<>"Y" THEN RETURN
- 1560 PG=NR/DR: LPRINT,: LPRINT, "AVAILABLE POWER GAIN ="; PG
- 1570 PG=10*(LOG(PG)/LOG(10)):LPRINT ,"AVAILABLE POWER GAIN IN DB =";PG
- 1580 LPRINT : RETURN
- 1590 REM ************** TRANDUCER GAIN *********************
- 1600 NR=SM(2,1)^2*(1-GM(1)^2)*(1-GM(2)^2)
- 1610 R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
- 1620 X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
- 1630 R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 1640 X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 1650 R3=FNMR(GR(1),GX(1),GR(2),GX(2))
- 1660 X3=FNMX(GR(1),GX(1),GR(2),GX(2))
- 1670 DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
- 1680 DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
- 1690 DM=FNMG(DR,DX): TG=NR/DM^2
- 1700 PRINT: PRINT "TRANSDUCER POWER GAIN ="; TG
- 1710 TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
- 1720 G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
- 1730 GU=G0*GS*GL: PRINT "UNILATERAL TRANSDUCER GAIN ="; GU
- 1740 UD=10*(LOG(GU)/LOG(10)): PRINT "UNILATERAL GAIN IN DB ="; UD
- 1750 UM=SM(2,1)^2/((1-SM(1,1)^2)*(1-SM(2,2)^2))
- 1760 PRINT "MAXIMUM UNILATERAL GAIN ="; UM
- 1770 MD=10*LOG(UM)/LOG(10): PRINT "MAX UNILATERAL GAIN IN DB ="; MD
- 1780 UF=SM(1,1)*SM(1,2)*SM(2,1)*SM(2,2)/((1-SM(1,1)^2)*(1-SM(2,2)^2))
- 1790 UL=1/(1+UF^2): UH=1/(1-UF^2)
- 1800 PRINT "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )"
- 1810 PRINT: INPUT "WANT TO CHANGE ZIN/ZOUT (ZI/ZO/BOTH/NO)"; Q$
- 1820 T9=1: IF Q$="ZI" THEN GOSUB 510: GOSUB 1070: GOTO 1600
- 1830 IF Q$="ZO" THEN GOSUB 600: GOSUB 880: GOTO 1600
- 1840 IF Q$="BOTH" THEN GOSUB 510: GOSUB 1070: GOSUB 600: GOSUB 880: GOTO 1600
- 1850 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$: T9=0
- 1860 IF H$<>"Y" THEN RETURN
- 1870 LPRINT ,: LPRINT , "TRANSDUCER POWER GAIN ="; TG
- 1880 TD=10*(LOG(TG)/LOG(10)): LPRINT , "TRANSDUCER GAIN IN DB ="; TD
- 1890 GU=G0*GS*GL: LPRINT , "UNILATERAL TRANSDUCER GAIN ="; GU
- 1900 UD=10*(LOG(GU)/LOG(10)): LPRINT , "UNILATERAL GAIN IN DB ="; UD
- 1910 LPRINT , "MAXIMUM UNILATERAL GAIN ="; UM
- 1920 MD=10*(LOG(UM)/LOG(10)): LPRINT ,"MAX UNILATERAL GAIN IN DB =";MD
- 1930 LPRINT , "UNILAT. FIGURE OF MERIT ="; UF; " ("; UL; "-"; UH; " )": LPRINT : RETURN
- 1940 REM ************* CONSTANT GAIN CIRCLES ****************
- 1950 R1=1-FNMR(SR(1,1),SX(1,1),GR(1),GX(1))
- 1960 X1=-FNMX(SR(1,1),SX(1,1),GR(1),GX(1))
- 1970 R2=1-FNMR(SR(2,2),SX(2,2),GR(2),GX(2))
- 1980 X2=-FNMX(SR(2,2),SX(2,2),GR(2),GX(2))
- 1990 G0=SM(2,1)^2: GS=(1-GM(1)^2)/(FNMG(R1,X1))^2: GL=(1-GM(2)^2)/(FNMG(R2,X2))^2
- 2000 B0=10*(LOG(G0)/LOG(10)): BS=10*LOG(GS)/LOG(10): BL=10*(LOG(GL)/LOG(10))
- 2010 PRINT: PRINT "G0="; G0, "GS="; GS, "GL="; GL
- 2020 PRINT "G0="; B0, "GS="; BS, "GL="; BL; " IN DB"
- 2030 M1=1/(1-SM(1,1)^2): M2=1/(1-SM(2,2)^2)
- 2040 B1=10*(LOG(M1)/LOG(10)): B2=10*(LOG(M2)/LOG(10))
- 2050 PRINT "MAX GS="; M1, "MAX GL="; M2
- 2060 PRINT "MAX GS="; B1, "MAX GL="; B2; " IN DB"
- 2065 GOSUB 3640
- 2070 CM=FNMG(SR(1,1),-SX(1,1)): CA=FNAG(SR(1,1),-SX(1,1))
- 2080 PRINT: PRINT "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE ="; CA
- 2090 ZR=Z0*FNDR(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
- 2100 ZX=Z0*FNDX(1+SR(1,1),-SX(1,1),1-SR(1,1),SX(1,1))
- 2110 PRINT "MAX SOURCE R ="; ZR, "X ="; ZX
- 2115 GOSUB 3640
- 2120 KM=FNMG(SR(2,2),-SX(2,2)): KA=FNAG(SR(2,2),-SX(2,2))
- 2130 PRINT: PRINT "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
- 2140 QR=Z0*FNDR(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
- 2150 QX=Z0*FNDX(1+SR(2,2),-SX(2,2),1-SR(2,2),SX(2,2))
- 2160 PRINT "MAX LOAD R ="; QR, "X ="; QX
- 2170 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 2180 IF H$<>"Y" THEN 2280
- 2190 LPRINT ,: LPRINT, "G0="; G0, "GS="; GS, "GL="; GL
- 2200 LPRINT, "G0="; B0, "GS="; BS, "GL="; BL; " IN DB"
- 2210 LPRINT, "MAX GS="; M1, "MAX GL="; M2
- 2220 LPRINT, "MAX GS="; B1, "MAX GL="; B2; " IN DB"
- 2230 LPRINT,: LPRINT, "MAX GAIN WITH SOURCE REFL COEF MAG ="; CM; " ANGLE =";CA
- 2240 LPRINT, "MAX SOURCE R ="; ZR, "X ="; ZX
- 2250 LPRINT,: LPRINT, "MAX GAIN WITH LOAD REFL COEF MAG ="; KM; " ANGLE ="; KA
- 2260 LPRINT, "MAX LOAD R ="; QR, "X ="; QX
- 2270 REM ************** GAIN CHANGE **********************
- 2280 G1=GS/M1: D1=G1*SM(1,1)/(1-SM(1,1)^2*(1-G1))
- 2290 R1=SQR(1-G1)*(1-SM(1,1)^2)/(1-SM(1,1)^2*(1-G1))
- 2300 PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
- 2310 PRINT "RADIUS OF SOURCE GAIN CIRCLE ="; R1
- 2320 G2=GL/M2: D2=G2*SM(2,2)/(1-SM(2,2)^2*(1-G2))
- 2330 R2=SQR(1-G2)*(1-SM(2,2)^2)/(1-SM(2,2)^2*(1-G2))
- 2340 PRINT: PRINT "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
- 2350 PRINT "RADIUS OF LOAD GAIN CIRCLE ="; R2
- 2360 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 2370 IF H$<>"Y" THEN 2420 ELSE PRINT: LPRINT, "GS IN DB"; BS, "GL IN DB"; BL
- 2380 LPRINT, "DIST. FROM CENTER S.C. TO CENT. OF SOURCE GAIN CIR. ="; D1
- 2390 LPRINT, "RADIUS OF SOURCE GAIN CIRCLE ="; R1
- 2400 LPRINT,: LPRINT, "DIST. FROM CENTER S.C. TO CENT. OF LOAD GAIN CIR. ="; D2
- 2410 LPRINT, "RADIUS OF LOAD GAIN CIRCLE ="; R2
- 2420 PRINT: INPUT "WANT TO CHANGE GAIN (GS/GL/BOTH/NO)"; Q$
- 2430 IF Q$<>"GL" AND Q$<>"GS" AND Q$<>"BOTH" THEN RETURN
- 2440 IF Q$="GS" OR Q$="BOTH" THEN INPUT "NEW GS IN DB"; BS
- 2450 IF Q$="GL" OR Q$="BOTH" THEN INPUT "NEW GL IN DB"; BL
- 2460 GS=10^(BS/10): GL=10^(BL/10)
- 2470 IF GS>M1 THEN PRINT "GS TOO LARGE, MAX VALUE ="; M1: GOTO 2420
- 2480 IF GL>M2 THEN PRINT "GL TOO LARGE, MAX VALUE ="; M2: GOTO 2420
- 2490 GOTO 2280
- 2500 REM ************* STABILITY ****************************
- 2510 K=(1+(FNMG(RD,XD))^2-SM(1,1)^2-SM(2,2)^2)/(2*FNMG(PR(1),PX(1)))
- 2520 PRINT: PRINT "AMPLIFIER WILL BE STABLE WITH CONJUGATE MATCHED SOURCE AND LOAD IF K>1: K ="; K
- 2530 IF K<1 THEN PRINT: PRINT "UNSTABLE": PRINT: GOTO 2980
- 2540 B1=1+SM(1,1)^2-SM(2,2)^2-(FNMG(RD,XD))^2
- 2550 B2=1+SM(2,2)^2-SM(1,1)^2-(FNMG(RD,XD))^2
- 2560 R=SQR(B1^2-4*(FNMG(RM,XM))^2)
- 2570 IF B1>0 THEN P1=(B1+R)/(2*FNMG(RM,XM)^2) ELSE P1=(B1-R)/(2*FNMG(RM,XM)^2)
- 2575 GOSUB 3640
- 2580 RC=RM*P1: XC=-XM*P1: SM=1/FNMG(RC,XC): SA=FNAG(RC,XC)
- 2590 SR=FNR(SM,SA): SX=FNX(SM,SA)
- 2600 RS=Z0*FNDR(1+SR,SX,1-SR,-SX): XS=Z0*FNDX(1+SR,SX,1-SR,-SX)
- 2610 PRINT: PRINT "OPT. SOURCE REF COEF MAG ="; SM
- 2620 PRINT "OPT. SOURCE REF COEF ANG ="; SA
- 2630 PRINT "OPT. REAL OF SOURCE Z ="; RS
- 2640 PRINT "OPT. IMG OF SOURCE Z ="; XS
- 2650 R=SQR(B2^2-4*(FNMG(RN,XN))^2)
- 2660 IF B2>0 THEN P2=(B2+R)/(2*FNMG(RN,XN)^2) ELSE P2=(B2-R)/(2*FNMG(RN,XN)^2)
- 2665 GOSUB 3640
- 2670 RC=RN*P2: XC=-XN*P2: LM=1/FNMG(RC,XC): LA=FNAG(RC,XC)
- 2680 LR=FNR(LM,LA): LX=FNX(LM,LA)
- 2690 RL=Z0*FNDR(1+LR,LX,1-LR,-LX): XL=Z0*FNDX(1+LR,LX,1-LR,-LX)
- 2700 PRINT: PRINT "OPT. LOAD REF COEF MAG ="; LM
- 2710 PRINT "OPT. LOAD REF COEF ANG ="; LA
- 2720 PRINT "OPT. REAL OF LOAD Z ="; RL
- 2730 PRINT "OPT. IMG OF LOAD Z ="; XL
- 2740 NR=SM(2,1)^2*(1-SM^2)*(1-LM^2)
- 2750 R1=1-FNMR(SR(1,1),SX(1,1),SR,SX)
- 2760 X1=-FNMX(SR(1,1),SX(1,1),SR,SX)
- 2770 R2=1-FNMR(SR(2,2),SX(2,2),LR,LX)
- 2780 X2=-FNMX(SR(2,2),SX(2,2),LR,LX)
- 2790 R3=FNMR(SR,SX,LR,LX)
- 2800 X3=FNMX(SR,SX,LR,LX)
- 2810 DR=FNMR(R1,X1,R2,X2)-FNMR(PR(1),PX(1),R3,X3)
- 2820 DX=FNMX(R1,X1,R2,X2)-FNMX(PR(1),PX(1),R3,X3)
- 2830 DM=FNMG(DR,DX): TG=NR/DM^2
- 2840 PRINT:PRINT "OPT. MATCH AVAILABLE PWR GAIN ="; TG
- 2845 TD=10*(LOG(TG)/LOG(10)): PRINT "TRANSDUCER GAIN IN DB ="; TD
- 2850 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 2860 IF H$<>"Y" THEN 2980
- 2870 LPRINT: LPRINT, "STABILITY CONSTANT K = "; K
- 2880 LPRINT, "OPT. MATCH AVAILABLE PWR GAIN ="; TG
- 2885 LPRINT, "TRANSDUCER GAIN IN DB ="; TD
- 2890 LPRINT: LPRINT, "OPT. SOURCE REF COEF MAG ="; SM
- 2900 LPRINT, "OPT. SOURCE REF COEF ANG ="; SA
- 2910 LPRINT, "OPT. REAL OF SOURCE Z ="; RS
- 2920 LPRINT, "OPT. IMG OF SOURCE Z ="; XS
- 2930 LPRINT,: LPRINT, "OPT. LOAD REF COEF MAG ="; LM
- 2940 LPRINT, "OPT. LOAD REF COEF ANG ="; LA
- 2950 LPRINT, "OPT. REAL OF LOAD Z ="; RL
- 2960 LPRINT, "OPT. IMG OF LOAD Z ="; XL: LPRINT
- 2970 REM ****************************************************
- 2980 LPRINT: LPRINT "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
- 2990 LPRINT "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
- 3000 LPRINT "2. SM(2,2)<1: SM(2,2) ="; SM(2,2)
- 3010 SF=ABS((SM(1,2)*SM(2,1)-FNMG(RM,-XM))/(SM(1,1)^2-FNMG(RD,XD)^2))
- 3020 LF=ABS((SM(1,2)*SM(2,1)-FNMG(RN,-XN))/(SM(2,2)^2-FNMG(RD,XD)^2))
- 3030 LPRINT "3. CL-RL>1: CL-RL ="; LF
- 3040 LPRINT "4. CS-RS>1: CS-RS ="; SF
- 3050 RL=ABS(SM(1,2)*SM(2,1)/(SM(2,2)^2-FNMG(RD,XD)^2))
- 3060 RS=ABS(SM(1,2)*SM(2,1)/(SM(1,1)^2-FNMG(RD,XD)^2))
- 3070 NR=SR(2,2)-FNMR(RD,XD,SR(1,1),-SX(1,1))
- 3080 NX=SX(2,2)-FNMX(RD,XD,SR(1,1),-SX(1,1))
- 3090 CR(2)=NR/(SM(2,2)^2-FNMG(RD,XD)^2)
- 3100 CX(2)=-NX/(SM(2,2)^2-FNMG(RD,XD)^2)
- 3110 NR=SR(1,1)-FNMR(RD,XD,SR(2,2),-SX(2,2))
- 3120 NX=SX(1,1)-FNMX(RD,XD,SR(2,2),-SX(2,2))
- 3130 CR(1)=NR/(SM(1,1)^2-FNMG(RD,XD)^2)
- 3140 CX(1)=-NX/(SM(1,1)^2-FNMG(RD,XD)^2)
- 3145 GOSUB 3640
- 3150 CM(2)=FNMG(CR(2),CX(2)): CA(2)=FNAG(CR(2),CX(2))
- 3155 GOSUB 3640
- 3160 CM(1)=FNMG(CR(1),CX(1)): CA(1)=FNAG(CR(1),CX(1))
- 3170 PRINT: PRINT "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
- 3180 PRINT "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
- 3190 PRINT "CIRCLE RADIUS ="; RL
- 3200 PRINT: PRINT "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
- 3210 PRINT "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
- 3220 PRINT "CIRCLE RADIUS ="; RS
- 3230 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3240 IF H$<>"Y" THEN RETURN
- 3250 LPRINT,: LPRINT, "AMPLIFIER WILL BE UNCONDITIONALLY STABLE IF:"
- 3260 LPRINT, "1. SM(1,1)<1: SM(1,1) ="; SM(1,1)
- 3270 LPRINT, "2. SM(2,2)<1: SM(2,2) ="; SM(2,2)
- 3280 LPRINT, "3. CL-RL>1: GL-RL ="; LF
- 3290 LPRINT, "4. CS-RS>1: CS-RS ="; SF
- 3300 LPRINT,: LPRINT, "LOCUS OF LOAD COEF FOR UNSTABLE CONDITION"
- 3310 LPRINT, "CIRCLE CENTER: MAG ="; CM(2), "ANGLE ="; CA(2)
- 3320 LPRINT, "CIRCLE RADIUS ="; RL
- 3330 LPRINT,: LPRINT, "LOCUS OF SOURCE COEF FOR UNSTABLE CONDITION"
- 3340 LPRINT, "CIRCLE CENTER: MAG ="; CM(1), "ANGLE ="; CA(1)
- 3350 LPRINT, "CIRCLE RADIUS ="; RS: LPRINT: RETURN
- 3360 PRINT: INPUT "MIN. NF IN DB ="; FM: FM=10^(FM/10)
- 3370 INPUT "MAG OF SOURCE COEF FOR MIN NF ="; MC
- 3380 INPUT "ANGLE OF COEF FOR MIN NF ="; AG
- 3390 INPUT "NF FOR Z0 SOURCE ="; F0: F0=10^(F0/10)
- 3400 PRINT:INPUT "NF IN DB FOR COEF CALC ="; IC: FI=10^(IC/10)
- 3410 RC=FNR(MC,AC): XC=FNX(MC,AC): G0=FNMG(1+RC,XC)^2
- 3420 EN=(F0-FM)*G0/MC^2: NI=(FI-FM)*G0/EN
- 3430 EM=MC/(1+NI): RE=SQR(NI^2+NI*(1-MC^2))/(1+NI)
- 3440 PRINT: PRINT "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AC
- 3450 PRINT "RADIUS OF CIRCLE ="; RE
- 3460 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3470 IF H$<>"Y" THEN 3500 ELSE LPRINT:LPRINT,"NF COEF ="; IC
- 3480 LPRINT, "CENTER OF CONST. NF COEF CIR AT MAG ="; EM, "ANGLE ="; AC
- 3490 LPRINT, "RADIUS OF CIRCLE ="; RE
- 3500 PRINT: INPUT "WANT TO TRY ANOTHER COEF (Y/N)"; Q$
- 3510 IF Q$="Y" THEN 3400 ELSE RETURN
- 3520 REM ************* S PARAMETER DISPLAY ****************
- 3530 PRINT: PRINT "S PARAMETERS FILE "; F$
- 3540 FOR J=1 TO 2: FOR I=1 TO 2
- 3550 PRINT "MAG OF S("; I; ","; J; ")="; SM(I,J)
- 3560 PRINT "ANG OF S("; I; ","; J; ")="; SA(I,J): NEXT: NEXT
- 3570 PRINT: INPUT "WANT HARDCOPY (Y/N)"; H$
- 3580 IF H$<>"Y" THEN RETURN
- 3590 LPRINT: LPRINT, "S PARAMETERS FILE "; F$
- 3600 FOR J=1 TO 2: FOR I=1 TO 2
- 3610 LPRINT, "MAG OF S("; I; ","; J; ")="; SM(I,J)
- 3620 LPRINT, "ANG OF S("; I; ","; J; ")="; SA(I,J)
- 3630 NEXT: NEXT: LPRINT: RETURN
- 3640 IF AR>0 GOTO 3650 ELSE GOTO 3660
- 3650 DEF FNAG(AR,AX)=DG*ATN(AR/AX):RETURN
- 3660 DEF FNAG(AR,AX)=DG*(ATN(AR/AX)+PI):RETURN
-